package com.heima.wemedia.controller.v1;

import com.heima.common.constants.wemedia.WemediaConstants;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dtos.NewsAuthDTO;
import com.heima.model.wemedia.dtos.WmNewsDTO;
import com.heima.model.wemedia.dtos.WmNewsPageReqDTO;
import com.heima.model.wemedia.pojos.WmNews;
import com.heima.wemedia.service.WmNewsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Api(value = "自媒体文章管理API",tags = "自媒体文章管理API")
@RestController
@RequestMapping("/api/v1/news")
public class WmNewsController {

    //依赖注入
    @Autowired
    private WmNewsService wmNewsService;

    /**
     * 自媒体文章列表查询
     * @param dto
     * @return
     */
    @ApiOperation("自媒体文章列表查询")
    @PostMapping("/list")
    public ResponseResult findlist(@RequestBody WmNewsPageReqDTO dto){
        return wmNewsService.findlist(dto);
    }

    /**
     * 自媒体文章发布，修改，保存草稿
     * @param dto
     * @return
     */
    @ApiOperation("自媒体文章发布,修改，保存草稿")
    @PostMapping("/submit")
    public ResponseResult submitNews(@RequestBody WmNewsDTO dto){
        return wmNewsService.submitnews(dto);
    }

    /**
     * 根据id查询文章
     * @param id
     * @return
     */
    @ApiOperation("根据id查询文章")
    @GetMapping("/one/{id}")
    public ResponseResult findByOne(@PathVariable("id") Integer id){
        return wmNewsService.findById(id);
    }

    /**
     * 根据id删除文章
     * @param id
     * @return
     */
    @ApiOperation("根据id删除文章")
    @GetMapping("/del_news/{id}")
    public ResponseResult delById(@PathVariable("id") Integer id){
        return wmNewsService.delById(id);
    }

    /**
     * 文章上下架操作
     * @param dto
     * @return
     */
    @ApiOperation("文章上下架操作")
    @PostMapping("/down_or_up")
    public ResponseResult dowmOrUp(@RequestBody WmNewsDTO dto){
        return wmNewsService.downOrUp(dto);
    }

    /**
     * 根据id修改自媒体文章
     * @param wmNews
     * @return
     */
    @ApiOperation("根据id修改自媒体文章")
    @PostMapping("/update")
    public ResponseResult update(@RequestBody WmNews wmNews){
         wmNewsService.updateById(wmNews);
         return ResponseResult.okResult();
    }

    /**
     * 查询文章列表
     * @param dto
     * @return
     * 1、按照创建时间降序
     * 2、后端查询的文章不应该包含草稿
     */
    @ApiOperation("查询文章列表")
    @PostMapping("/list_vo")
    public ResponseResult findList(@RequestBody NewsAuthDTO dto){
       return wmNewsService.findlists(dto);
    }

    /**
     * 根据id查询文章详情
     * @param id
     * @return
     */
    @ApiOperation("根据id查询文章详情")
    @GetMapping("/one_vo/{id}")
    public ResponseResult findWmNewsVo(@PathVariable("id") Integer id){
       return wmNewsService.findWmNewsVo(id);
    }

    /**
     * 文章审核通过,状态为4
     * @param dto
     * @return
     */
    @ApiOperation("文章审核通过,状态为4")
    @PostMapping("/auth_pass")
    public ResponseResult newsPass(@RequestBody NewsAuthDTO dto){
        return wmNewsService.updateStatus(WemediaConstants.WM_NEWS_AUTH_PASS,dto);
    }

    /**
     * 文章审核不通过
     * @param dto
     * @return
     */
    @ApiOperation("文章审核不通过，状态为2")
    @PostMapping("/auth_fail")
    public ResponseResult newsFail(@RequestBody NewsAuthDTO dto){
        return wmNewsService.updateStatus(WemediaConstants.WM_NEWS_AUTH_FAIL,dto);
    }
}
